// 开启express服务器

const express = require('express');
const path = require('path');
let app = express();
// 将uploads文件夹中的所有静态资源托管起来
app.use('/uploads', express.static('uploads'))

// 使用multer的步骤
// 1. 导包
const multer = require('multer');
// 2. 设置multer的文件保存路径为uploads目录
// let upload = multer({ dest: 'uploads' });

// 2.1 自定义存储文件目录和文件名称
let storage = multer.diskStorage({
    destination: function (req, file, cb) {
        // cb回调函数，第一个参数默认写null，第二个参数表示文件存储的目录是哪里
        cb(null, 'uploads') // 文件存储到当前目录下的uploads文件夹下
    },
    filename: function (req, file, cb) {
        // cb回调函数，第一个参数默认写null，第二个参数是自定义文件名
        // 需求：文件名是 客户端上传过来的文件名+随机数+扩展名
        // cb(null, file.fieldname + '-' + Date.now())
        /*
          file参数格式：{
                    fieldname: 'avator',
                    originalname: 'user.png',
                    encoding: '7bit',
                    mimetype: 'image/png'
                    }
        */
        // console.log('file===>', file);
        let extname = path.extname(file.originalname); //获取到扩展名 .png
        let filename = path.basename(file.originalname, extname); // 获取文件名（不带有扩展名）部分
        let randomNum = Math.random();
        // 组合一个新的文件名
        let newfile = filename + randomNum + extname;
        // 设置新文件名
        cb(null, newfile);
    }
})
// 根据自定义storage创建一个文件上传对象
let upload = multer({ storage });

// 3. 使用multer的对象完成上传,single方法表示接收一个上传的文件
app.post('/upload', upload.single("avator"), (req, res) => {
    // req.body可以获取到客户端提交过来的非文件类型参数
    console.log(req.body);
    // req.file
    /*
      req.file的格式：{
                fieldname: 'avator',
                originalname: 'user.png',
                encoding: '7bit',
                mimetype: 'image/png',
                destination: 'uploads',
                filename: 'user0.9627324427734467.png',
                path: 'uploads\\user0.9627324427734467.png',
                size: 3641
                }
    */
    // console.log(req.file);

    res.send({ mst: '文件上传OK', imgSrc: req.file.path });
})

app.listen(8006, () => {
    console.log('文件上传服务器8006');
})